/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fisica;

import hibernate.Sesion;
import hibernate.objeto.Farmacologico;
import java.util.Vector;
import org.hibernate.Query;
import presentacion.utilidad.Paginador;

/**
 *
 * @author Administrador
 */
public class FarmacologicoFisica extends CapaFisica {

    /**
     * Retorna el objeto Farmacologico según el ID.
     *
     * @param idFarmacologico El id del objeto Farmacologico
     * @return El objeto Farmacologico consultado, null si no existe
     */
    public static Farmacologico getFarmacologicoPorId(int idFarmacologico) {
        Query q = Sesion.sesion.createQuery(
                "from Farmacologico " +
                "where idFarmacologico = " + idFarmacologico
                );

        return (Farmacologico) getObjeto(q);
    }

    /**
     * Retorna el vector de objetos Farmacologico según el id
     * antecedente.
     *
     * @param idAntecedente El id del antecedente asociado
     * @return El vector de objetos Farmacologico consultado, null si no existe
     */
    public static Vector<Farmacologico>
            getVectorFarmacologicoPorIdAntecedente(int idAntecedente) {
        Query q = Sesion.sesion.createQuery(
                "select f " +
                "from Farmacologico as f " +
                "where f.antecedente.idAntecedente = " +
                idAntecedente
                );

        return getVectorObjetos(q);
    }
    
    /**
     * Retorna el vector de objetos Farmacologicos según el id del tratamiento
     * medicamentoso.
     *
     * @param idTratamientoMedicamentoso El id del tratamiento medicamentoso
     * asociado
     * @return El vector de objetos Farmacologico consultado, null si no existe
     */
    public static Vector<Farmacologico>
            getVectorFarmacologicoPorIdTratamientoMedicamentoso(
            int idTratamientoMedicamentoso) {
        Query q = Sesion.sesion.createQuery(
                "select f " +
                "from Farmacologico as f " +
                "where f.tratamientoMedicamentoso.idTratamientoMedicamentoso = " +
                idTratamientoMedicamentoso
                );

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos Farmacologico, correspondiente a los
     * antecedentes, según el paciente.
     *
     * @param idPaciente El paciente en cuestión
     * @return El vector de objetos Farmacologico consultado, null si no existe
     */
    public static Vector<Farmacologico>
            getVectorAntecedenteFarmacologicoPorIdPaciente(int idPaciente) {
        Query q = Sesion.sesion.createQuery(
                "select f " +
                "from Farmacologico as f " +
                "where f.antecedente.paciente.idPaciente = " +
                idPaciente
                + " order by f.fechaFarmacologico desc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos Farmacologicos, que pertenecen a algún
     * tratamiento y excluyendo a los que son antecedentes de la práctica
     * ambulatoria, según el paciente.
     *
     * @param idPaciente El paciente en cuestión
     * @return El vector de objetos Farmacologico consultado, null si no existe
     */
    public static Vector<Farmacologico>
            getVectorTratamientoMedicamentosoAmbulatorioFarmacologicoPorIdPaciente(
            int idPaciente) {
        Query q = Sesion.sesion.createQuery(
                "select f " +
                "from Farmacologico as f " +
                "where f.tratamientoMedicamentoso.evolucion."
                + "enfermedadYDiagnosticoAmbulatorio.paciente.idPaciente = " +
                idPaciente + " and "
                + "f.antecedente = null"
                );

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos Farmacologicos, que pertenecen a algún
     * tratamiento y excluyendo a los que son antecedentes de la práctica
     * intetrnación, según el paciente.
     *
     * @param idPaciente El paciente en cuestión
     * @return El vector de objetos Farmacologico consultado, null si no existe
     */
    public static Vector<Farmacologico>
            getVectorTratamientoMedicamentosoInternacionFarmacologicoPorIdPaciente(
            int idPaciente) {
        Query q = Sesion.sesion.createQuery(
                "select f " +
                "from Farmacologico as f " +
                "where f.tratamientoMedicamentoso.evolucion."
                + "diagnosticoYTriageInternacion.paciente.idPaciente = " +
                idPaciente + " and "
                + "f.antecedente = null"
                );

        return getVectorObjetos(q);
    }

}